package com.jingyi.common.core.domain.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jingyi.common.core.domain.BaseEntity;
import com.jingyi.common.enums.RecordState;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 微信患者医疗记录
 *
 * @author jingyi
 */
@Setter
@Getter
public class WxUserMedicalRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 记录ID */
    private Long recordId;

    /**
     * 编号
     */
    private String code;
    /**
     * 用户信息id
     */
    private Long userId;
    /**
     * 患者来源
     */
    private String origin;

    /**
     * 现阶段沟通结果
     */
    private String communicationResult;

    /**
     * 入院时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp admissionTime;

    /**
     * 病床床位号
     */
    private String bedNumber;

    /**
     * 手术时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp surgeryTime;

    /**
     * 离院时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp leaveTime;

    /**
     * 主要病症诉求
     */
    private String diseaseClaim;

    /**
     * 来京就诊医院
     */
    private String hospital;

    /**
     * 科室
     */
    private String dept;

    /**
     * 医生
     */
    private String doctor;

    /**
     * 绿通费用
     */
    private String expense;

    /**
     * 费用类别
     */
    private String expenseCategory;

    /**
     * 既往病史
     */
    private String medicalHistoryDesc;

    /**
     * 就诊诉求
     */
    private String appeal;

    /**
     * 个人病史描述
     */
    private String message;

    /**
     * 现病史描述
     */
    private String message2;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /**
     * 状态（0：未审核，1：审核通过，2：审核不通过，3：资料不全）
     */
    private String state;

    private String stateName;

    /**
     * 审核人
     */
    private String auditBy;

    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp auditTime;

    /**
     * 审核描述
     */
    private String auditRemark;

    /**
     * 处理人
     */
    private String processBy;

    /**
     * 处理时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp processTime;

    /**
     * 处理描述
     */
    private String processRemark;

    /**
     * 姓名
     */
    private String username;


    /**
     * 微信openid
     */
    private String openId;

    /**
     * 身份证号码
     */
    private String identityCard;

    /**
     * 性别（0：men，1：women）
     */
    private String gender;

    /**
     * 电话
     */
    private String phone;

    /**
     * 年龄
     */
    private String age;

    /**
     * 现住地
     */
    private String address;


    private List<String> medicalHistory;

    private List<WxResource> resourceList;

    private List<String> have;

    private WxUser wxUser;



    public String getStateName(){
        RecordState stateEnum = RecordState.getByCode(this.state);
        if(null != stateEnum){
            return stateEnum.getDesc();
        }
        return null;
    }

    public List<String> _getHave() {
        return have;
    }

    public List<String> getHave(){
        if(null != resourceList && resourceList.size()>0){
            return resourceList.stream().map(resource -> resource.getImgPath()).collect(Collectors.toList());
        }
        return null;
    }

    public List<String> getMedicalHistory(){
        if(StringUtils.isEmpty(this.medicalHistoryDesc)){
            return null;
        }
        return Arrays.asList(this.medicalHistoryDesc.split(","));
    }

    public void _setMedicalHistoryDesc(){
        if(null != medicalHistory && medicalHistory.size()>0){
            this.medicalHistoryDesc = medicalHistory.stream().map(String::valueOf).collect(Collectors.joining(","));
        }
    }
}
